Verified symbolic execution with Kripke specification monads (and no meta-programming)

نویسندگان

چکیده

Verifying soundness of symbolic execution-based program verifiers is a significant challenge. This especially true if the resulting tool needs to be usable outside proof assistant, in which case we cannot rely on shallowly embedded assertion logics and meta-programming. The manipulate deeply assertions, it crucial for efficiency eagerly prune unreachable paths simplify intermediate assertions way that can justified towards proof. Only few such tools exist literature, their proofs are intricate hard generalize or reuse. We contribute novel, systematic approach construction verifier. first implement shallow verification condition generator as an object language interpreter specification monad, using abstract interface featuring angelic demonic nondeterminism. Next, build executor by implementing similar interpreter, monad. monad lives universe Kripke-indexed variables scope path condition. Finally, reduce execution relating both executors Kripke logical relation. report practical application these techniques Katamaran, verifying security guarantees offered instruction set architectures (ISAs). fully verified combining our machinery with conditions against axiomatized separation logic, Iris-based implementation axioms, proven sound operational semantics. Based experience good results practicality tool, demonstrating viability approach.

برای دانلود باید عضویت طلایی داشته باشید

برای دانلود متن کامل این مقاله و بیش از 32 میلیون مقاله دیگر ابتدا ثبت نام کنید

اگر عضو سایت هستید لطفا وارد حساب کاربری خود شوید

منابع مشابه

Symbolic Execution of the Gist Specification Language

A b s t r a c t : Symbolic execution can help clarify the behavior implied by a program specification without implementing that specification, and can thereby assist the difficult process of developing a correct specification. However, symbolic execution of specifications poses problems that do not arise in symbolic execution of ordinary programming languages. We describe a symbolic evaluator, ...

متن کامل

Symbolic Execution with CEGAR

Symbolic execution, a standard technique in program analysis, is a particularly successful and popular component in systems for test-case generation. One of the open research problems is that the approach suffers from the path-explosion problem. We apply abstraction to symbolic execution, and refine the abstract model using counterexampleguided abstraction refinement (Cegar), a standard techniq...

متن کامل

Logic Programming with Monads and Comprehensions

We give a logical reconstruction of all-solution predicates in terms of list comprehensions in Prolog's and we describe a variety of logic programming constructs in terms of monads and monad morphisms. Novel monad structures are described for lazy function lists, clause unfoldings and a monad morphism based embedding of Prolog in Prolog is given.

متن کامل

Energy-Aware Programming Utilizing the SEEP Framework and Symbolic Execution

SEEP executes the code under test symbolically to extract all code paths and their path constraints. On basis of these results, SEEP crafts program code with predefined input data, so-called path entities. For each path entity, SEEP generates a runtime execution trace by executing them on a test system and increments a block counter for every basic block (branchless sequence of code) each time ...

متن کامل

Executing Verified Compiler Specification

Much work has been done in verifying a compiler specification, both in hand-written and mechanical proofs. However, there is still a gap between a correct compiler specification and a correct compiler implementation. To fill this gap and obtain a correct compiler implementation, we take the approach of generating a compiler from its specification. We verified the correctness of a compiler speci...

متن کامل

ذخیره در منابع من


  با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید

ژورنال

عنوان ژورنال: Proceedings of the ACM on programming languages

سال: 2022

ISSN: ['2475-1421']

DOI: https://doi.org/10.1145/3547628